// 选择时间和日期
$(".form-date").datetimepicker({
    weekStart: 1,
    todayBtn:  1,
    autoclose: 1,
    todayHighlight: 1,
    startView: 2,
    forceParse: 0,
    showMeridian: 1,
    format: "yyyy-mm-dd hh:ii:ss"
});
// 添加表单验证
$(document).ready(function() {
    $('#addForm').bootstrapValidator({
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            name: {
                validators: {
                    notEmpty: {
                        message: '角色名称不能为空'
                    }
                }
            },
            code: {
                validators: {
                    notEmpty: {
                        message: '角色编码不能为空'
                    }
                }
            }
        }
    }).on('success.form.bv', function (e) {
        // Prevent form submission
        e.preventDefault();
        // Get the form instance
        var $form = $(e.target);
        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');
        // Use Ajax to submit form data
        $.post($form.attr('action'), $form.serialize(), function(result) {
            console.log(result);
            if (result.errorCode == 'y') {
                new $.zui.Messager('提示消息：' + result.errorText, {
                    icon: 'exclamation-sign',
                    type: 'success',
                    time: 2000
                }).show();
                setTimeout("location.reload()", 1000);
            } else {
                new $.zui.Messager('提示消息：' + result.errorText, {
                    icon: 'exclamation-sign',
                    type: 'success',
                    time: 2000
                }).show();
            }
        }, 'json');
    });
    // 取消
    $('#resetBtn').click(function() {
        $('#addForm').data('bootstrapValidator').resetForm(true);
    });
    // 修改表单验证
    $('#editForm').bootstrapValidator({
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            name: {
                validators: {
                    notEmpty: {
                        message: '角色名称不能为空'
                    }
                }
            },
            code: {
                validators: {
                    notEmpty: {
                        message: '角色编码不能为空'
                    }
                }
            }
        }
    }).on('success.form.bv', function (e) {
        // Prevent form submission
        e.preventDefault();
        // Get the form instance
        var $form = $(e.target);
        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');
        // Use Ajax to submit form data
        $.post($form.attr('action'), $form.serialize(), function(result) {
            console.log(result);
            if (result.errorCode == 'y') {
                new $.zui.Messager('提示消息：' + result.errorText, {
                    icon: 'exclamation-sign',
                    type: 'success',
                    time: 2000
                }).show();
                setTimeout("location.reload()", 1000);
            } else {
                new $.zui.Messager('提示消息：' + result.errorText, {
                    icon: 'exclamation-sign',
                    type: 'success',
                    time: 2000
                }).show();
            }
        }, 'json');
    });
    // 取消
    $('#editResetBtn').click(function() {
        $('#editForm').data('bootstrapValidator').resetForm(true);
    });
});
// 全选
function checkBox(name,checked){
    //全选开始
    $("input[name='"+name+"']").prop("checked", checked);
}
// 批量删除
function optDelete() {
    // 首先获取所有选中的id集合
    var check = $(".checked_detect:checked");
    // 定义一个存放id集合的数组
    var ids = new Array();
    for (var i=0; i < check.length; i++) {
        ids[i] = $(check[i]).attr("value");
    }
    // 判断是否选择了一个元素
    if (ids.length == 0) {
        new $.zui.Messager('提示消息：' + "请至少选择一个", {
            icon: 'exclamation-sign',
            type: 'danger',
            time: 2000
        }).show();
        return;
    }
    // 删除确认
    bootbox.confirm({
        title: "操作提示",
        size: "small",
        message: "你确定要删除选择的数据吗？",
        callback: function (result) {
            if (result) {
                $.ajax({
                    type : "POST",
                    cache : false,
                    url : "/admin/role/deleteBatch",
                    data : {ids :ids},
                    contentType: "application/x-www-form-urlencoded;charset=utf-8",
                    dataType:"json",
                    success : function (result) {
                        if (result.errorCode == 'y') {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'success',
                                time: 2000
                            }).show();
                            setTimeout("location.reload()", 1000);
                        } else {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'danger',
                                time: 2000
                            }).show();
                        }
                    },error : function(result) {
                        new $.zui.Messager('提示消息：' + result.errorText, {
                            icon: 'exclamation-sign',
                            type: 'danger',
                            time: 2000
                        }).show();
                    }
                });
            }
        }
    });
}
// 修改
function optUpdate() {
    // 首先获取所有选中的id集合
    var check = $(".checked_detect:checked");
    // 定义一个存放id集合的数组
    var ids = new Array();
    for (var i=0; i < check.length; i++) {
        ids[i] = $(check[i]).attr("value");
    }
    // 判断是否选择了一个元素
    if (ids.length == 0) {
        new $.zui.Messager('提示消息：' + "请至少选择一个(且只能选择一项)", {
            icon: 'exclamation-sign',
            type: 'danger',
            time: 2000
        }).show();
        return;
    } else if (ids.length > 1) {
        new $.zui.Messager('提示消息：' + "请至少选择一个(且只能选择一项)", {
            icon: 'exclamation-sign',
            type: 'danger',
            time: 2000
        }).show();
        return;
    }
    bootbox.confirm({
        title: "操作提示",
        size: "small",
        message: "你确定要修改选择的数据吗？",
        callback: function (result) {
            if (result) {
                $.ajax({
                    type : "GET",
                    cache : false,
                    url : "/admin/role/get/" + ids,
                    contentType: "application/json;charset=utf-8",
                    dataType:"json",
                    success : function (result) {
                        if (result.errorCode == 'y') {
                            $("#id").val(result.roleDto.id);
                            $("#name").val(result.roleDto.name);
                            $("#code").val(result.roleDto.code);
                            $('#editModal').modal({
                                keyboard : false,
                                show     : true
                            });
                        } else {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'danger',
                                time: 2000
                            }).show();
                        }
                    },error:function(){
                        new $.zui.Messager('提示消息：' + "系统异常", {
                            icon: 'exclamation-sign',
                            type: 'danger',
                            time: 2000
                        }).show();
                    }
                });
            }
        }
    });
}
// 分配权限事件
var ztree;
function optScope() {
    // 首先获取所有选中的id集合
    var check = $(".checked_detect:checked");
    // 定义一个存放id集合的数组
    var ids = new Array();
    for (var i=0; i < check.length; i++) {
        ids[i] = $(check[i]).attr("value");
    }
    // 判断是否选择了一个元素
    if (ids.length == 0) {
        new $.zui.Messager('提示消息：' + "请至少选择一个(且只能选择一项)", {
            icon: 'exclamation-sign',
            type: 'danger',
            time: 2000
        }).show();
        return;
    } else if (ids.length > 1) {
        new $.zui.Messager('提示消息：' + "请至少选择一个(且只能选择一项)", {
            icon: 'exclamation-sign',
            type: 'danger',
            time: 2000
        }).show();
        return;
    }
    // 加载菜单树
    $.bootstrapLoading.start();
    $.ajax({
        type : "GET",
        cache : true,
        url : "/admin/menu/tree",
        contentType: "application/json;charset=utf-8",
        dataType:"json",
        success : function (result) {
            if (result.errorCode == 'y') {
                // 初始化加载菜单树，并且默认全部展开节点
                var setting = {
                    check: {
                        enable: true
                    },
                    data: {
                        simpleData: {
                            enable: true
                        },
                        // 设置 zTree 显示节点时，将 treeNode 的 menuIcon 属性当做节点图标
                        key: {
                            icon: "menuIcon"
                        }
                    }
                };
                var zNodes = result.menuTree;
                ztree = $.fn.zTree.init($("#menuTree"), setting, zNodes);
                // 展开所有菜单
                ztree.expandAll(false);

                // 获取当前角色拥有的菜单
                $.get("/admin/menu/getMenus/" + ids[0], function (result) {
                    if (result.menuDtos != null && result.menuDtos.length > 0) {
                        // 勾选角色所拥有的菜单
                        var menuIds = new Array();
                        for (var i=0; i < result.menuDtos.length; i++) {
                            menuIds[i] = result.menuDtos[i].id;
                        }
                        for (var i = 0; i < menuIds.length; i++) {
                            var node = ztree.getNodeByParam("id", menuIds[i]);
                            if (null != node) {
                                ztree.checkNode(node, true, false);
                            }
                        }
                    }
                });

                // 打开加载菜单模态框
                $('#menuModal').modal({
                    keyboard : false,
                    show     : true
                });
            } else {
                new $.zui.Messager('提示消息：' + result.errorText, {
                    icon: 'exclamation-sign',
                    type: 'danger',
                    time: 2000
                }).show();
            }
        },error:function(){
            new $.zui.Messager('提示消息：' + "系统异常", {
                icon: 'exclamation-sign',
                type: 'danger',
                time: 2000
            }).show();
        },complete : function () {
            $.bootstrapLoading.end();
        }
    });
}
// 确定菜单后调用事件
function getSelectNodes() {
    ztree = $.fn.zTree.getZTreeObj("menuTree");
    // 获取复选框/单选框选中的节点：
    var nodes = ztree.getCheckedNodes(true);
    /*console.log("nodes: " + nodes);*/
    // 获取光标选中的(selected)
    /*var nodes = treeObj.getSelectedNodes();*/
    var menuIds = [];
    for (var i = 0; i < nodes.length; i ++){
        var node = nodes[i];
        // 选中的节点并且该节点的孩子节点没选中或者是叶子节点
        /*if (node.isParent == false || (node.check_Child_State == 0)) {
            menuIds.push(node.id);
        }*/
        menuIds.push(node.id);
    }
    if (menuIds.length < 1) {
        new $.zui.Messager('提示消息：' + "请至少选择一个", {
            icon: 'exclamation-sign',
            type: 'danger',
            time: 2000
        }).show();
        return;
    }
    // 首先获取所有选中的id集合
    var check = $(".checked_detect:checked");
    // 定义一个存放id集合的数组
    var ids = new Array();
    for (var i=0; i < check.length; i++) {
        ids[i] = $(check[i]).attr("value");
    }
    // 保存角色菜单关联关系
    bootbox.confirm({
        title: "操作提示",
        size: "small",
        message: "你确定要分配选择的数据吗？",
        callback: function (result) {
            if (result) {
                var data = {
                    roleId: ids[0],
                    menuIds: menuIds
                };
                $.ajax({
                    type : "POST",
                    cache : false,
                    url : "/admin/role/scope",
                    data : JSON.stringify(data),
                    contentType: "application/json;charset=utf-8",
                    dataType:"json",
                    success : function (result) {
                        if (result.errorCode == 'y') {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'success',
                                time: 2000
                            }).show();
                            setTimeout("location.reload()", 1000);
                        } else {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'danger',
                                time: 2000
                            }).show();
                        }
                    }
                });
            }
        }
    });
}
// 编辑
function editNode(id) {
    bootbox.confirm({
        title: "操作提示",
        size: "small",
        message: "你确定要编辑选择的数据吗？",
        callback: function (result) {
            if (result) {
                $.ajax({
                    type : "GET",
                    cache : false,
                    url : "/admin/role/get/" + id,
                    contentType: "application/json;charset=utf-8",
                    dataType:"json",
                    success : function (result) {
                        if (result.errorCode == 'y') {
                            $("#id").val(result.roleDto.id);
                            $("#name").val(result.roleDto.name);
                            $("#code").val(result.roleDto.code);
                            $('#editModal').modal({
                                keyboard : false,
                                show     : true
                            });
                        } else {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'danger',
                                time: 2000
                            }).show();
                        }
                    },error:function(){
                        new $.zui.Messager('提示消息：' + "系统异常", {
                            icon: 'exclamation-sign',
                            type: 'danger',
                            time: 2000
                        }).show();
                    }
                });
            }
        }
    });
}
// 删除
function deleteNode(id) {
    // 定义一个存放id集合的数组
    bootbox.confirm({
        title: "操作提示",
        size: "small",
        message: "你确定要删除选择的数据吗？",
        callback: function (result) {
            if (result) {
                $.ajax({
                    type : "DELETE",
                    cache : false,
                    url : "/admin/role/delete/" + id,
                    contentType: "application/x-www-form-urlencoded;charset=utf-8",
                    dataType:"json",
                    success: function (result) {
                        if (result.errorCode == 'y') {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'success',
                                time: 2000
                            }).show();
                            // 一秒后跳转
                            setTimeout("location.reload()", 1000);
                        } else {
                            new $.zui.Messager('提示消息：' + result.errorText, {
                                icon: 'exclamation-sign',
                                type: 'danger',
                                time: 2000
                            }).show();
                        }
                    },error : function(result) {
                        new $.zui.Messager('提示消息：' + result.errorText, {
                            icon: 'exclamation-sign',
                            type: 'danger',
                            time: 2000
                        }).show();
                    }
                });
            }
        }
    });
}
// 导出excel
function onExcel() {
    bootbox.confirm({
        title: "操作提示",
        size: "small",
        message: "你确定要导出选择的数据吗？",
        callback: function (result) {
            if (result) {
                var searchParam = $("input[name='searchParam']").val();
                document.location.href="/admin/role/export?searchParam="+searchParam;
                new $.zui.Messager('提示消息：' + "导出成功", {
                    icon: 'exclamation-sign',
                    type: 'success',
                    time: 2000
                }).show();
            }
        }
    });
}
// 分页
function queryAll(pageNum, pageSize){
    var searchParam = $("input[name='searchParam']").val();
    var startDate = $("input[name='startDate']").val();
    var endDate = $("input[name='endDate']").val();
    document.location.href="/admin/role/list?pageNum="+pageNum+"&searchParam="+searchParam+"&startDate="+startDate+"&endDate="+endDate;;
}